package com.uacp.sgb.vista.controladores;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import com.uacp.sgb.datos.dominio.entidades.Bien;
import com.uacp.sgb.datos.dominio.entidades.Dependencia;
import com.uacp.sgb.datos.dominio.entidades.Equipo;
import com.uacp.sgb.datos.dominio.entidades.Expediente;
import com.uacp.sgb.datos.dominio.entidades.Mueble;
import com.uacp.sgb.datos.dominio.entidades.Oficio;
import com.uacp.sgb.negocio.servicios.ServicioBaja;
import com.uacp.sgb.negocio.servicios.ServicioBienes;
import com.uacp.sgb.vista.util.UtilReportes;

@ManagedBean (name="dardebaja")
@SessionScoped
public class ControlDarDeBaja implements Serializable
{
	private List<Bien> bienesNormales;
	private List<Bien> bienesBaja;
	private List<Bien> bienesSeleccionadosNor;
	private List<Bien> bienesSeleccionadosEli;
	
	private Expediente expediente = new Expediente();
	private Oficio oficio = new Oficio();
	
	private ServicioBaja servicioBaja;
	
	private Dependencia dependencia;
	
	public ControlDarDeBaja() 
	{
		dependencia = new Dependencia();
		dependencia.setNombre("FACULTAD DE DERECHO Y CIENCIA POLITICA");
		
		List<Equipo> equipos = ServicioBienes.getEquipos(dependencia);
		List<Mueble> muebles = ServicioBienes.getMuebles(dependencia);
		
		bienesNormales = new ArrayList<>();
		bienesBaja = new ArrayList<>();
		
		bienesNormales.addAll(equipos);
		bienesNormales.addAll(muebles);
		
		servicioBaja = new ServicioBaja(bienesNormales, bienesBaja);
	}
	
	public void eliminarBien()
	{
		servicioBaja.marcarBienes(bienesSeleccionadosNor);
	}
	
	public void deseliminarBien()
	{
		servicioBaja.desmarcarBienes(bienesSeleccionadosEli);
	}
	
	public String generarPdf() 
	{
		servicioBaja.darDeBaja(expediente, oficio);
		
		UtilReportes.generarReporteEquipos(dependencia,expediente);
		UtilReportes.generarReporteMuebles(dependencia,expediente);
		
		FacesContext context = FacesContext.getCurrentInstance();  
        
        context.addMessage(null, new FacesMessage("Baja de bienes", "Operacion terminada"));  
        
		return "dardebaja_1.xhtml";
	}
	
	public List<Bien> getBienesNormales() {
		return bienesNormales;
	}

	public List<Bien> getBienesEliminados() {
		return bienesBaja;
	}

	public List<Bien> getBienesSeleccionadosNor() {
		return bienesSeleccionadosNor;
	}

	public void setBienesSeleccionadosNor(List<Bien> bienesSeleccionadosNor) {
		this.bienesSeleccionadosNor = bienesSeleccionadosNor;
	}

	public List<Bien> getBienesSeleccionadosEli() {
		return bienesSeleccionadosEli;
	}

	public void setBienesSeleccionadosEli(List<Bien> bienesSeleccionadosEli) {
		this.bienesSeleccionadosEli = bienesSeleccionadosEli;
	}

	public Expediente getExpediente() {
		return expediente;
	}

	public void setExpediente(Expediente expediente) {
		this.expediente = expediente;
	}

	public Oficio getOficio() {
		return oficio;
	}

	public void setOficio(Oficio oficio) {
		this.oficio = oficio;
	}
}
